package br.com.revenda.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.revenda.conexao.conectionFactory;
import br.com.revenda.modelo.Produto;

public class ProdutoDAO {

	Connection con;
	
	public ProdutoDAO(){
		con = new conectionFactory().getConnection();
	}
	
	
	public void salvar(Produto p){
		String sql = "insert into produto (idFornecedor , produto , qtd , valorCompra , valorVenda , dataCompra , avisar)values(?,?,?,?,?,?,?)";
		PreparedStatement pstm;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, p.getIdFornecedor());
			pstm.setString(2, p.getProduto());
			pstm.setInt(3, p.getQtd());
			pstm.setDouble(4, p.getValorUniCompra());
			pstm.setDouble(5, p.getValorUniVenda());
			pstm.setString(6, p.getDataCompra());
			pstm.setInt(7, p.getAvisar());
			pstm.execute();
			pstm.close();
			con.close();			
		} catch (SQLException e) {
			e.printStackTrace();
		}		
	}
	
	public Double DevolveValor(Integer id){
		String sql = "select * from produto where idProduto=?";
		Double valor = null;
		try {
			PreparedStatement pstm = con.prepareStatement(sql);
			
			pstm.setInt(1, id);
			ResultSet rs = pstm.executeQuery();
			
			while(rs.next()){
				Produto p = new Produto();
				p.setValorUniVenda(rs.getDouble("valorVenda"));
				 valor = p.getValorUniVenda();
			}								
				rs.close();
				pstm.close();
				con.close();			
		} catch (SQLException e) {
			e.printStackTrace();
		}	
		
		return valor;
	} 
	
	
	
	
	public List<Produto> listaTodos(){
		List<Produto> prod = new ArrayList<Produto>();
		String sql = "select * from produto INNER JOIN fornecedor ON fornecedor.idFornecedor = produto.idFornecedor ";
		PreparedStatement pstm;
		try {
			pstm = con.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			
			while(rs.next()){
				Produto p = new Produto();
				p.setIdProduto(rs.getInt("idProduto"));
				p.setIdFornecedor(rs.getInt("idFornecedor"));
				p.setProduto(rs.getString("produto"));
				p.setQtd(rs.getInt("qtd"));
				p.setValorUniCompra(rs.getDouble("valorCompra"));
				p.setValorUniVenda(rs.getDouble("valorVenda"));
				p.setDataCompra(rs.getString("dataCompra"));
				p.setAvisar(rs.getInt("avisar"));
				p.getFornecedor().setNome(rs.getString("nome"));
				prod.add(p);			
			}
			rs.close();
			pstm.close();
			con.close();
			} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		
		return prod;		
	}
	
	
	
	public void delete(Produto p){
		String sql = "delete from produto where idProduto=?";
		try {
			PreparedStatement pstm= con.prepareStatement(sql);
			pstm.setInt(1, p.getIdProduto());	
			pstm.execute();
			pstm.close();
			con.close();			
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	
	public void alterar(Produto p){
		String sql = "update produto set idFornecedor=? , produto=? , qtd=? , valorCompra=? , valorVenda=? , dataCompra=? , avisar=? where idProduto=?";
		PreparedStatement pstm;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, p.getIdFornecedor());
			pstm.setString(2, p.getProduto());
			pstm.setInt(3, p.getQtd());
			pstm.setDouble(4, p.getValorUniCompra());
			pstm.setDouble(5, p.getValorUniVenda());
			pstm.setString(6, p.getDataCompra());
			pstm.setInt(7, p.getAvisar());
			pstm.setInt(8, p.getIdProduto());
			pstm.execute();
			pstm.close();
			con.close();			
		} catch (SQLException e) {
			e.printStackTrace();
		}		
	}
	
	
	
	
	
}
